توجه : آموزش زیر به صورت پروژه محور می باشد لذا آشنا کمی با لاراول مورد نیاز می باشد
پروژه لاراول زیر عملیات اضافه کردن داده ، ویرایش داده ، حذف داده را انجام می دهد
لاراول چیست
در این جلسه قصد داریم در مورد آموزش لاراول صحبت کنیم لاراول یکی از فریمورک های قوی زبان برنامه نویسی پی اچ پی می باشد که دارای طرفداران بسیار زیادی نیز در سراسر دنیا در بین برنامه نویسی ها می باشد
آموزش نصب لاراول
برای نصب لاراول نیاز می باشد که composer رو نصب کنید برای نصب کامپوزر کافی است به لینک زیر مراجعه کنید و کامپوزر رو دانلود کنید
بعد از نصب composer حالا نوبت به نصب لاراول می رسد نصب Laravel نیز کار سختی نیست برای نصب Laravelکافی است در محیط cmd دستور زیر را اجرا کنید
1
|
composer create-project--prefer-dist laravel/laravel passportappointmentsystem
|
خوب بعد از اجرای کد بالا لاراول نصب شده و بعد از مراجعه به درایو که کومپوزر رو نصب کردید که اغلب درابو c هست می توانید پوشه passportappointmentsystem را مشاهده کنید که حاوی فایل های لاراول می باشد
ایجاد دیتابیس در لاراول
برای ساخت دیتابیس در لاراول نیر ابتدا یک دیتابیس در زمپ یا ومپ بسازیدو نام آن را passportsystem قرار دهید و سپس اطلاعات آن را را در فایل .env به صورت زیر وارد کنید
1
2
3
4
5
6
|
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=passportsystem
DB_USERNAME=root
DB_PASSWORD=
|
از دستور زیر نیز برای ست شدن با دیتابیس استفاده کنید
1
|
php artisan migrate
|
ساخت مدل در لاراول
بعد از اتصال با بانک اطلاعاتی می خواهیم با استفاده از مدل یک جدول ایجاد کنیم و سپس فیلد هایی را به آن اضافه کنیم
برای این منظور کد زیر را اجرا کنید
1
|
php artisan make:model Passport-m
|
خوب بعد از اجرای دستور بالا به مسیر زیر بروید دقت داشته باشید که با دستور بالا فایل create_passports_table.php ایجاد شده است
Laravel >> database >> migrations >> create_passports_table.php
فایل create_passports_table.php را باز کنید و کد زیر را در داخل آن قرار دهید
1
2
3
4
5
6
7
8
9
10
11
12
13
|
publicfunctionup()
{
Schema::create('passports',function(Blueprint$table){
$table->increments('id');
$table->string('name');
$table->integer('date');
$table->string('email')->unique();
$table->integer('number');
$table->string('office');
$table->string('filename');
$table->timestamps();
});
}
|
بعد از قرار دادن کد های بالا در فایل create_passports_table.php نوبت به اجرای کد برای ساخت فیلد های جدول می رسد برای این منظور کد زیر را اجرا نمایید
1
|
php artisan migrate
|
با اجرای دستور بالا اگر به دیتابیس خود مراجعه کنید می بینید جدولی با عنوان passports با فیلد هایی ایجاد شده است
ساخت veiws در لاراول
برای ساخت ویو در لاراول یک فایل با عنوان create.blade.php ساخته و در مسیر resources >> views >> create.blade.php قرار دهید
سپس فایل را باز کنید و کد زیر را در آن قرار دهید
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
<!--create.blade.php-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Laravel5.6CRUD Tutorial With Example </title>
<link rel="stylesheet"href="{{asset('css/app.css')}}">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.0/css/bootstrap-datepicker.css"rel="stylesheet">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.0/js/bootstrap-datepicker.js"></script>
</head>
<body>
<div class="container">
<h2>Passport Appointment System</h2><br/>
<form method="post"action="{{url('passports')}}"enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Name">Name:</label>
<input type="text"class="form-control"name="name">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Email">Email:</label>
<input type="text"class="form-control"name="email">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Number">Phone Number:</label>
<input type="text"class="form-control"name="number">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<input type="file"name="filename">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<strong>Date:</strong>
<input class="date form-control" type="text"id="datepicker"name="date">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<lable>Passport Office</lable>
<select name="office">
<option value="Mumbai">Mumbai</option>
<option value="Chennai">Chennai</option>
<option value="Delhi">Delhi</option>
<option value="Bangalore">Bangalore</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4"style="margin-top:60px">
<button type="submit"class="btn btn-success">Submit</button>
</div>
</div>
</form>
</div>
<script type="text/javascript">
$('#datepicker').datepicker({
autoclose:true,
format:'dd-mm-yyyy'
});
</script>
</body>
</html>
|
دقیقا کدهای بالا برای شما فرم زیر را ایجاد می کند
ساخت کنترلر در لاراول
ساخت controller در لاراول نیز آسان می باشد کافی است دستور زیر را اجرا نمایید
1
|
php artisan make:controller PassportController--resource
|
با اجرای دستور بالا یک کنترلر با اسم PassportController ساخته می شود
برای مشاهده کنترلر ساخته شده به مسیر زیر بروید
app\Http\Controllers
مسیریابی در لاراول
مسیریابی در لاراول نیز بسیار ساده می باشد برای این منظور و ساختن یک مسیر به مسیر routes >> web.php بروید و فایل web.php را باز کنید
خوب برای دسترسی یه کنترلری که ساختید کافی است در فایل web.php کد زیر را قرار دهید
1
|
Route::resource('passports','PassportController');
|
بعد از اجرای دستور بالا به کنترلری که ساختید مراجعه کنید PassportController.php
سپس آن را باز کنید و در قسمت create کد زیر را جایگزین نمایید
1
2
3
4
|
publicfunctioncreate()
{
returnview('create');
}
|
سپس کد زیر را اجرا نمایید
1
|
php artisan serve
|
حالا به مسیر http://localhost:8000/passports/create بروید
ذخیره سازی داده در دیتابیس لاراول
برای این منظور باز هم کنترلر PassportController.php باز کنید و تابع store را با کد های زیر ویرایش کنید
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//PassportController.php
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
publicfunctionstore(Request$request)
{
if($request->hasfile('filename'))
{
$file=$request->file('filename');
$name=time().$file->getClientOriginalName();
$file->move(public_path().'/images/',$name);
}
$passport=new\App\Passport;
$passport->name=$request->get('name');
$passport->email=$request->get('email');
$passport->number=$request->get('number');
$date=date_create($request->get('date'));
$format=date_format($date,"Y-m-d");
$passport->date=strtotime($format);
$passport->office=$request->get('office');
$passport->filename=$name;
$passport->save();
returnredirect('passports')->with('success','Information has been added');
}
|
نمایش داده های در لارول
برای نمایش داده ها نیز کنترلر PassportController.php را یکبار دیگر باز کنید و در قسمت index کد های زیر را قرار دهید
1
2
3
4
5
6
7
|
//PassportController.php
publicfunctionindex()
{
$passports=\App\Passport::all();
returnview('index',compact('passports'));
}
|
برای نمایش داده یک ویو به صورت زیر در مسیر resources >> views با عنوان index.blade.php بسازید و کد های زیر را در آن قرار دهید
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<!--index.blade.php-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Index Page</title>
<link rel="stylesheet"href="{{asset('css/app.css')}}">
</head>
<body>
<div class="container">
<br/>
@if(\Session::has('success'))
<div class="alert alert-success">
<p>{{\Session::get('success')}}</p>
</div><br/>
@endif
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Date</th>
<th>Email</th>
<th>Phone Number</th>
<th>Passport Office</th>
<th colspan="2">Action</th>
</tr>
</thead>
<tbody>
@foreach($passports as$passport)
@php
$date=date('Y-m-d',$passport['date']);
@endphp
<tr>
<td>{{$passport['id']}}</td>
<td>{{$passport['name']}}</td>
<td>{{$date}}</td>
<td>{{$passport['email']}}</td>
<td>{{$passport['number']}}</td>
<td>{{$passport['office']}}</td>
<td><ahref="{{action('PassportController@edit', $passport['id'])}}"class="btn btn-warning">Edit</a></td>
<td>
<form action="{{action('PassportController@destroy', $passport['id'])}}"method="post">
@csrf
<input name="_method"type="hidden"value="DELETE">
<button class="btn btn-danger"type="submit">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</body>
</html>
|
بعد از انجام مراحل بالا دستور http://localhost:8000/passports را در مرورگر اجرا کنید
تصویر زیر برای شما نمایش داده خواهید شد
بروزرسانی داده ها در لاراول
برای به روزرسانی داده های در لاراول کافی است به کنترولر برگردید و سپس تابع edit را به صورت زیر ویرایش کنید
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//PassportController.php
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
publicfunctionedit($id)
{
$passport=\App\Passport::find($id);
returnview('edit',compact('passport','id'));
}
|
سپس به مسیر resources >> viewsبروید و برای ویرایش داده ها یک فرم بسازید با عنوانedit.blade.php و سپس کد های زیر را در آن قرار دهید
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
<!--edit.blade.php-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Laravel5.6CRUD Tutorial With Example</title>
<link rel="stylesheet"href="{{asset('css/app.css')}}">
</head>
<body>
<div class="container">
<h2>EditAForm</h2><br />
<form method="post"action="{{action('PassportController@update', $id)}}">
@csrf
<input name="_method"type="hidden"value="PATCH">
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="name">Name:</label>
<input type="text"class="form-control"name="name"value="{{$passport->name}}">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="email">Email</label>
<input type="text"class="form-control"name="email"value="{{$passport->email}}">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="number">Phone Number:</label>
<input type="text"class="form-control"name="number"value="{{$passport->number}}">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4"style="margin-left:38px">
<lable>Passport Office</lable>
<select name="office">
<option value="Mumbai" @if($passport->office=="Mumbai")selected@endif>Mumbai</option>
<option value="Chennai" @if($passport->office=="Chennai")selected@endif>Chennai</option>
<option value="Delhi"@if($passport->office=="Delhi")selected@endif>Delhi</option>
<option value="Bangalore"@if($passport->office=="Bangalore")selected@endif>Bangalore</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4"style="margin-top:60px">
<button type="submit"class="btn btn-success"style="margin-left:38px">Update</button>
</div>
</div>
</form>
</div>
</body>
</html>
|
سپس به کنترلر برگردید و تابع update را به صورت زیر تغییر دهید
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//PassportCpntroller.php
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
publicfunctionupdate(Request$request,$id)
{
$passport=\App\Passport::find($id);
$passport->name=$request->get('name');
$passport->email=$request->get('email');
$passport->number=$request->get('number');
$passport->office=$request->get('office');
$passport->save();
returnredirect('passports');
}
|
حذف داده در لاراول
برای حذف داد در لاراول نیز باز به کنترلر مربوطه برگردید و تابع destroy را به صورت زیر ویرایش کنید
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//PassportController.php
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
publicfunctiondestroy($id)
{
$passport=\App\Passport::find($id);
$passport->delete();
returnredirect('passports')->with('success','Information has been deleted');
}
|